/**
 *	\file AKTTTBasicDrawing.h
 *  
 *  \section desc_sec Description
 *  Description
 *  
 *  \if copyright
 *  	Copyright 2008 Ben Chen. All rights reserved.
 *  \endif
 *  
 *  \section hist_sec Change History:
 *  	-	1/19/08		BC		Created this file
 *  
 *  <hr>
 *  \addtogroup AnimalKingdom
 *  @{
 */

#import "AKBasicDrawing.h"
#import "AKInteractiveDrawing.h"

@class CABasicAnimation;
@protocol AKImageProvider, AKGeometryProvider, AKBasicInfoProvider;

@interface AKDrawing : NSObject <AKBasicDrawing, AKInteractiveDrawing>
{
	id <AKImageProvider>		imageProvider;
	id <AKGeometryProvider>		geometryProvider;
	id <AKBasicInfoProvider>	basicInfoProvider;
	NSView						*drawingView;
	
	NSMutableDictionary			*pieceImages;
	NSMutableDictionary			*pieceRects;
	
	NSMutableDictionary			*pieces;
	
	// Drawing
	CALayer		*containerLayer;
	CALayer		*background;
	CALayer		*reflectionLayer;
	CALayer		*specialEffectLayer;
	CALayer		*piecesLayer;
	
	CALayer		*draggedPiece;
	CALayer		*draggedReflection;
	NSData		*draggedData;
	
	NSData		*activatedPiece;
	
	CABasicAnimation	*dragAnimation;
}

- (id)initWithImageProvider:(id <AKImageProvider>)anImageProvider 
		   geometryProvider:(id <AKGeometryProvider>)aGeometryProvider
		  basicInfoProvider:(id <AKBasicInfoProvider>)aBasicInfoProvider
			//stateMaintainer:(id <AKStateMaintainer>)aStateMaintainer
				   drawView:(NSView*)aDrawView;

@end

/** @} */
